package com.polytech.diploma.SQLGenerator.Oracle.Functions;

public enum FunctionType {
	
	/**
	 * Numeric Functions
	 */
	
	ABS,
	ACOS,
	ASIN,
	ATAN,
	ATAN2,
	BITAND,
	CEIL,
	COS,
	COSH,
	EXP,
	FLOOR,
	LN,
	LOG,
	MOD,
	NANVL,
	POWER,
	REMAINDER,
	ROUND,
	SIGN,
	SIN,
	SINH,
	SQRT,
	TAN,
	TANH,
	TRUNC,
	WIDTH_BUCKET,
	
	/**
	 * Character Functions Returning Character Values
	 */
	
	CHR,
	CONCAT,
	INITCAP,
	LOWER,
	LPAD,
	LTRIM,
	NCHR,
	NLS_INITCAP,
	NLS_LOWER,
	NLS_UPPER,
	NLSSORT,
	REGEXP_REPLACE,
	REGEXP_SUBSTR,
	REPLACE,
	RPAD,
	RTRIM,
	SOUNDEX,
	SUBSTR,
	TRANSLATE,
	TREAT,
	TRIM,
	UPPER,
	
	/**
	 * Character Functions Returning Number Values
	 */
	
	ASCII,
	INSTR,
	LENGTH,
	REGEXP_COUNT,
	REGEXP_INSTR,
	
	/**
	 * Datetime Functions
	 */
	
	ADD_MONTHS,
	CURRENT_DATE,
	CURRENT_TIMESTAMP,
	DBTIMEZONE,
	EXTRACT,
	FROM_TZ,
	LAST_DAY,
	LOCALTIMESTAMP,
	MONTHS_BETWEEN,
	NEW_TIME,
	NEXT_DAY,
	NUMTODSINTERVAL,
	NUMTOYMINTERVAL,
	ORA_DST_AFFECTED,
	ORA_DST_CONVERT,
	ORA_DST_ERROR,
	DATE_ROUND, 				/*ROUND*/
	SESSIONTIMEZONE,
	SYS_EXTRACT_UTC,
	SYSDATE,
	SYSTIMESTAMP,
	TO_CHAR,
	TO_DSINTERVAL,
	TO_TIMESTAMP,
	TO_TIMESTAMP_TZ,
	TO_YMINTERVAL,
	DATE_TRUNC,					/*TRUNC*/
	TZ_OFFSET,
	
	/**
	 * General Comparison Functions
	 */
	
	GREATEST,
	LEAST,
	
	/**
	 * Conversion Functions
	 */
	
	ASCIISTR,
	BIN_TO_NUM,
	CAST,
	CHARTOROWID,
	COMPOSE,
	CONVERT,
	DECOMPOSE,
	HEXTORAW,
	RAWTOHEX,
	RAWTONHEX,
	ROWIDTOCHAR,
	ROWIDTONCHAR,
	SCN_TO_TIMESTAMP,
	TIMESTAMP_TO_SCN,
	TO_BINARY_DOUBLE,
	TO_BINARY_FLOAT,
	TO_BLOB,
	TO_CLOB,
	TO_DATE,
	TO_LOB,
	TO_MULTI_BYTE,
	TO_NCHAR,
	TO_NCLOB,
	TO_NUMBER,
	TO_SINGLE_BYTE,
	TRANSLATE_USING,
	
	/**
	 * Collection Functions
	 */
	
	CARDINALITY,
	COLLECT,
	POWERMULTISET,
	POWERMULTISET_BY_CARDINALITY,
	SET,
	
	/**
	 * Encoding and Decoding Functions
	 */
	
	DECODE,
	DUMP,
	ORA_HASH,
	VSIZE,
	
	/**
	 * NULL-Related Functions
	 */
	
	COALESCE,
	LNNVL,
	NULLIF,
	NVL,
	NVL2,
	
	/**
	 * Environment and Identifier Functions
	 */
	
	SYS_CONTEXT,
	SYS_GUID,
	SYS_TYPEID,
	UID,
	USER,
	USERENV,
	
	/**
	 * Arithmetical expressions
	 */
	
	PLUS,
	MINUS,
	MULT,
	DIV,
	MINUS_SIGN,
	
	/**
	 * Logical expressions
	 */
	
	AND,
	OR,
	NOT,
	
	/**
	 * Case expresion
	 */
	CASE,
	
	/**
	 * Aggregate Functions
	 */
	
	AVG,
	COUNT,
	MAX,
	MIN,
	SUM,
	
	/**
	 * Analytic Functions
	 */
	
	CORR,
	COVAR_POP,
	COVAR_SAMP,
	CUME_DIST,
	DENSE_RANK,
	FIRST,
	FIRST_VALUE,
	LAG,
	LAST,
	LAST_VALUE,
	LEAD,
	NTILE,
	PERCENT_RANK,
	PERCENTILE_CONT,
	PERCENTILE_DISC,
	RANK,
	RATIO_TO_REPORT,
	REGR, /*TODO*/
	ROW_NUMBER,
	STDDEV,
	STDDEV_POP,
	STDDEV_SAMP,
	VAR_POP,
	VAR_SAMP,
	
	/**
	 * Hierarchical Function
	 */
	
	PRIOR,
	LEVEL,
	SYS_CONNECT_BY_PATH,
	CONNECT_BY_ISCYCLE,
	CONNECT_BY_ROOT
}
